from flask import flash
from flask import redirect
from flask import render_template, request

from _apply import bp_apply
from manager import Apply, db


# 当用户请求路径为‘/’时，会执行该视图函数
@bp_apply.route('/')
def index():
    # 查询到数据库中作者的所有对象
    apply = Apply.query.all()
    return render_template('show_data.html', applys=apply)


# 当用户请求路径为‘/add_msg/’时，会执行该视图函数
@bp_apply.route('/add_msg/', methods=['POST'])
def add_msg():
    # 从HTML页面获取到POST请求的数据，参数为HTML标签中的键-->name
    onstellation = request.form.get('onstellation')
    sex = request.form.get('sex')
    name = request.form.get('name')
    contact = request.form.get('contact')

    # 判断用户输入为空时的操作
    if not (onstellation and sex and onstellation and sex):
        print("11111111111111")
        flash("作者姓名或者书籍名称不能为空")
        # 重定向到首页，展示数据结果
        return redirect('/')

    # 判断用户输入是否与库内作者匹配，匹配则得到该作者对象，反之为None
    print(contact)
    _contact = Apply.query.filter(Apply.contact == contact).first()
    print(_contact)
    # n_apply = Apply(sex=sex, onstellation=onstellation,  name=name, contact=contact) 
    # db.session.add(n_apply)
    # db.session.commit()
    if _contact:
        # 判断用户输入是否与库内作者对应的书籍匹配，匹配则得到该作者书籍对象，反之为None
        # print("当这个用户已经报名")
        flash('这个用户已经报名')
        # book = Book.query.filter(Book.name == book_name).first()
        # if book:
        #     # 将提示信息储存在flash中
        #     
        # else:
        #     # 库中有该作者，无此作者的图书，创建图书对象，并添加入库
        #     n_book = Book(name=book_name, author_id=author.id)
        #     db.session.add(n_book)
        #     db.session.commit()
    else:
        n_apply = Apply(sex=sex, onstellation=onstellation,  name=name, contact=contact) 
        print(sex,onstellation,name,contact)
        db.session.add(n_apply)
        db.session.commit()
        # 库中无该作者信息，且无此作者的图书信息，创建作者对象和图书对象，并添加入库
        # n_author = Author(name=author_name)
        # db.session.add(n_author)
        # db.session.commit()
        # n_book = Book(name=book_name, author_id=n_author.id)
        # db.session.add(n_book)
        # db.session.commit()
    # 重定向到首页，展示数据结果
    return redirect('/')


# 当用户请求路径为‘/delete_book/’时，会执行该视图函数,
# book_id是动态过滤获取到/delete_book/后边的部分路径，且为整数类型

# @bp_book_author.route('/delete_book/<int:book_id>')
# def delete_book(book_id):
#     # 根据前端传回来的信息（图书主键id）获取到该图书对象
#     book = Book.query.get(book_id)
#     # 将该图书信息在数据库中执行删除操作
#     db.session.delete(book)
#     db.session.commit()
#     # 重定向到首页，展示数据结果
#     return redirect('/')


# 当用户请求路径为‘/delete_author/’时，会执行该视图函数
# author_id是动态过滤获取到/delete_author/后边的部分路径，且为整数类型
# @bp_book_author.route('/delete_author/<int:author_id>')
# def delete_author(author_id):
#     # 根据前端传回来的信息（作者主键id）获取到该作者对象
#     author = Author.query.get(author_id)
#     # 为了删除作者时，同时删除该作者笔下的所有作品，所以利用关系属性，遍历该作者下的图书对象，并删除
#     for book in author.book:
#         db.session.delete(book)
#     # 将该作者信息在数据库中执行删除操作
#     db.session.delete(author)
#     db.session.commit()
#     # 重定向到首页，展示数据结果
#     return redirect('/')
